Kiểu hợp nhất Kiểu và khai báo biến trong C

Kiểu hợp nhất có tên từ khóa là union kiểu đặc biệt này cho phép nó chứa dữ liệu mà có thể có kiểu khác nhau trong cùng một phần bộ nhớ (mà nó có thể được cấp phát khi khai báo biến):

1 union folder2 { 3   int number;4   double real;5   char letter;6 }; //lưu ý dấu ";" cần dùng để kết thúc câu lệnh

Để khai báo biến, có thể dùng cách thông thường, tạo mảng các union hay cách tham chiếu:

union folder matter;union folder listtype[100];union folder *matterptr;

Để gán hay truy cập giá trị cho một biến union, có thể dùng toán tử "." Theo hàng khai báo đầu tiên của thí dụ trên ta có thể viết một trong các phép gán:

matter.real = 3.1416;

hay là:

matter.letter = 't';

hay là:

matter.number = 1;

Lưu ý:

  • Việc gán giá trị cho một biến kiểu union đòi hỏi kiểu của dữ liệu đó phải có mặt trong khai báo ban đầu của nó. Theo thí dụ trên thì kiểu folder chỉ chấp nhận chứa một đơn vị dữ liệu của một trong ba kiểu int, double,char.
  • Một khi giá trị có kiểu đúng nào đó được gán cho một biến kiểu union thì nó sẽ xóa bỏ hẳn giá trị cũ (nếu có) mà biến này đã chứa trước đó.
  • Việc truy cập một giá trị từ một biến kiểu union cần lưu ý đến kiểu hiện tại của dữ liệu đang được chứa của biến này nếu không, có thể gây ra lỗi dùng sai kiểu.
  • Điểm khác nhau quan trọng giữa unionstructunion chỉ có được một thành phần (nhưng thành phần này phải có kiểu tùy theo khai báo của người lập trình) trong khi struct bao gồm nhiều thành phần (và mỗi thành phần có thể có kiểu khác nhau).
  • Tương tự như struct, union cho phép khai báo nhiều union lồng nhau.